import axios from 'axios';

let baseUrl = 'https://api-dev.mov.movie/ms/app';
let headers = {};


const apiClient = axios.create({
  baseUrl: baseUrl,
  withCredentials: false,//跨域请求凭证
  headers: headers

})

// 请求拦截
apiClient.interceptors.request.use(
  config => {
    const token = localStorage.getItem('authToken');
    if(token) {
      config.headers['Authorization'] = `Bearer ${token}`;
    }
    return token;
  },
  error => {
    return Promise.reject(error);
  }
)

// 处理数据
apiClient.interceptors.response.use(
  response => {
    if(response.code == 200) {
      return response.data;
    }
  },
  error => {
    // 对响应错误进行统一处理
    if (error.response) {
      // 请求已发出，但服务器响应的状态码不在2xx范围内
      switch (error.response.status) {
        case 401:
          // 处理未授权错误
          console.error('Unauthorized: ', error.response.data);
          break;
        case 403:
          // 处理禁止访问错误
          console.error('Forbidden: ', error.response.data);
          break;
        case 404:
          // 处理资源未找到错误
          console.error('Not Found: ', error.response.data);
          break;
        case 500:
          // 处理服务器内部错误
          console.error('Server Error: ', error.response.data);
          break;
        default:
          console.error('Error:', error.response.data);
      }
    } else if (error.request) {
      // 请求已发出，但没有收到响应
      console.error('No response received:', error.request);
    } else {
      // 在设置请求时发生了错误
      console.error('Error setting up request:', error.message);
    }

    // 返回一个rejected promise以便调用者可以捕获错误
    return Promise.reject(error);
  }
)


export {
  apiClient
}